home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr12 / qemm70tn.zip / EXCEPT13.TEC < prev    next >
Text File  |  1993-06-08  |  8KB  |  170 lines

  1.  
  2.                 Exception #13 Errors Explained
  3.  
  4.  
  5.  
  6.   This QEMM 7 technote is an abridged version of a technical
  7.   bulletin that is available from the following sources:
  8.  
  9.   Quarterdeck Technical Support BBS:  EXCEPT13.TEC
  10.                          CompuServe:  EXCEPT.TEC
  11.                               Q/FAX:  #142
  12.  
  13.  
  14.   Subject: An explanation of what QEMM's Exception #12 and Exception
  15.   #13 messages mean, why they are reported, and some of the steps
  16.   that can be taken to identify their causes.  See also EX13FLOW.TEC
  17.   for troubleshooting suggestions.
  18.  
  19.   PLEASE NOTE:  Except where otherwise noted, "386 processor"
  20.   refers to any 80386 or higher processor.
  21.  
  22.   Q. What is an Exception #13?  What is an Exception #12?
  23.   Q. What does the QEMM Exception message mean?  How can it help me?
  24.  
  25.   Users of QEMM may sometimes encounter a report that an attempt
  26.   has been made to execute an invalid instruction.  It is almost
  27.   certain that QEMM, in and of itself, is not the cause of
  28.   Exception #13 problems, though QEMM's memory management may come
  29.   into conflict with other hardware and software on your system.
  30.  
  31.   To answer the questions above, it is worthwhile to examine the
  32.   Exception #13 report bit by bit.
  33.  
  34.   "Your PC's main processor has received an invalid instruction..."
  35.  
  36.   Exceptions are the processor's response to unusual, invalid, or
  37.   special conditions in the normal operation of the 80386 and
  38.   higher processor. Exceptions cause the 386 processor to stop what
  39.   it is doing and to try to react to the condition that caused the
  40.   exception.  QEMM is designed to capture some of these exceptions -
  41.   particularly those caused by protection faults or invalid
  42.   instructions, which could cause a program or the entire system to
  43.   crash -- and display a report to the user. Neither DOS nor
  44.   Microsoft's EMM386.EXE has a protected mode interrupt 13 handler,
  45.   so if an exception occurs using only DOS or EMM386.EXE, your
  46.   system simply crashes and you have no report.
  47.  
  48.   Q. What causes an Exception #12 or Exception #13?
  49.  
  50.   "[This may be] due to an error in one of your programs, a
  51.   conflict between two programs, or a conflict between a program
  52.   and a hardware device."
  53.  
  54.   The exception reported is most commonly #13, the General
  55.   Protection Fault exception.  This indicates that a program has
  56.   tried to execute an invalid or privileged instruction.  The
  57.   result may be a system crash, but QEMM does provide a report
  58.   before the crash happens.
  59.  
  60.   Some examples of invalid instructions include:
  61.  
  62.   - 386-specific instructions that are disallowed when the
  63.   processor is in virtual 8086 mode.  The processor is in this mode
  64.   whenever QEMM is in an ON state -- essentially when it is
  65.   providing expanded memory or High RAM.
  66.  
  67.   - A program trying to write data to a segment that has been
  68.   marked as executable or read-only.  (The data could overwrite
  69.   program code.)
  70.  
  71.   - Trying to run program code from a data segment.  (If data is
  72.   read as code, it will be a series of meaningless or nonsensical
  73.   instructions -- which, if executed, could jump to invalid
  74.   addresses or overwrite the operating system.)
  75.  
  76.   - Exceeding the limit of a segment.  Segments in virtual 8086
  77.   mode are not permitted to exceed FFFFh (65535 decimal) bytes or
  78.   to fall below 0 bytes. Neither a program instruction nor a memory
  79.   reference may span the boundary of a segment.
  80.  
  81.   This last case is the most common; it is a problem known as
  82.   "segment wrap." QEMM is designed to trap and report these errors,
  83.   but it cannot defend against the system crashes that they may
  84.   cause.
  85.  
  86.   Occasionally Exception #12, indicating a stack exception, will be
  87.   reported. This is a protection violation very similar to
  88.   Exception #13, but is one in which the stack segment is involved
  89.   in some way.
  90.  
  91.   Very infrequently, an Exception #0 is reported.  This is not
  92.   intentional; it is usually the result of QEMM's stack being
  93.   corrupted while QEMM was trying to report another exception, or
  94.   is the result of some other system error.
  95.  
  96.   It is important to remember that in the vast majority of cases,
  97.   QEMM is not involved with the problem, but is merely reporting
  98.   it.
  99.  
  100.   Q.  What do I do now?
  101.  
  102.   "...It is likely that the system is unstable now and should be
  103.   rebooted...."
  104.  
  105.   QEMM is designed to offer the user the opportunity to terminate
  106.   the offending program, or to reboot the computer, but often the
  107.   damage has already been done by the time that the exception is
  108.   trapped and reported.  In this instance, you may find the
  109.   computer locked regardless of what you choose.  If the computer
  110.   is indeed hung, you should write down the information on the
  111.   screen and then reboot the machine.
  112.  
  113.   While QEMM's exception reports can be cryptic to non-programmers -
  114.   - or to programmers who have little experience with assembly
  115.   language -- the information that they provide can sometimes be
  116.   quite helpful. Exception reports can help you to identify which
  117.   program has triggered the exception message, what the invalid
  118.   instruction was, and the state of the processor's registers when
  119.   the error occurred.  Armed with this information, you may be able
  120.   to help the developer of the offending application determine the
  121.   problem that led to the exception, and thus the developer may be
  122.   able to provide a temporary workaround or a permanent fix.
  123.  
  124.   How can an Exception #13 be fixed?  Two Quarterdeck Technical
  125.   Notes can help you determine if you can solve the problem
  126.   yourself.  Quarterdeck Technical Note #241, QEMM:  General
  127.   Troubleshooting (TROUBLE.TEC) is a good place to start.  This
  128.   note describes common problems and possible solutions, and will
  129.   help if the cause of the Exception #13 is a memory conflict or
  130.   bus-mastering issue.  Quarterdeck Technical Note #232, Exception
  131.   #13 Advanced Troubleshooting (EX13FLOW.TEC) should help you to
  132.   determine if there is anything at all that you can do yourself to
  133.   fix the problem.
  134.  
  135.   If you follow the instructions in both of these technical notes
  136.   completely, and the Exception #13 persists, the problem is almost
  137.   certainly a bug in the offending program.  If this is so, you
  138.   should contact the publisher of the program and explain the
  139.   situation.   It is possible that he/she is aware of the problem
  140.   and has a solution.  Unless and until the bug is corrected, you
  141.   may, at best, be able to make the problem subside.
  142.  
  143.   Changing the location of the offending program in memory will
  144.   sometimes help. If you are running under DESQview and you are
  145.   sure that you have given the program enough memory (i.e., all you
  146.   can give it), try adding 16 to the size of the script buffer on
  147.   page 2 of Change a Program.  If you are not running under
  148.   DESQview, try adding an extra file handle or two.  The key here
  149.   is to change the location of the program in memory, which can
  150.   occasionally be enough to provide temporary relief from the
  151.   Exception #13.
  152.  
  153.   If you are unsuccessful in resolving a conflict, the information
  154.   provided by the report should be forwarded, along with a Manifest
  155.   printout and a complete description of your system, to the
  156.   developer of the program that you were running at the time.
  157.  
  158.   If you are interested in reading a longer, highly technical
  159.   explanation of Exception #13 errors, refer to the unabridged
  160.   version of this technical bulletin, available through our
  161.   standard support channels under the same filename.  See
  162.   CONTACT.TEC in your QEMM\TECHNOTE directory for information on
  163.   obtaining technical bulletins.
  164.  
  165.   *****************************************************************
  166.             Trademarks are property of their respective owners.
  167.   This technical note may be copied and distributed freely as long
  168.   as it is distributed in its entirety and it is not distributed
  169.   for profit.  Copyright (C) 1993 by Quarterdeck Office Systems
  170.   ********************** E N D   O F   F I L E ********************